<template>
<!-- 首页组件页面 -->
  <div>
    <div class="search-bar">
      <!-- Vant的布局采用的是24格布局法 -->
      <!-- 搜索条布局 search bar -->
      <van-row>
        <van-col span="3">
          <!-- 通过绑定属性的方法插入图片 -->
          <van-icon name="location" size="1.8rem" color="#fff"/>
        </van-col>
        <van-col span="16">
          <input type="text" class="search-input" />
        </van-col>
        <van-col span="5">
          <van-button size="mini">查找</van-button>
        </van-col>
      </van-row>
    </div>
    <!-- 轮播图 swipwer area -->
    <div class="swiper-area">
      <van-swipe :autoplay="3000">
        <van-swipe-item v-for="(banner,index) in bannerPicArray" :key="index">
          <!-- 加入v-lazy="banner.imageUrl"就可以图片的懒加了。 -->
          <img v-lazy="banner.image" width="100%" />
        </van-swipe-item>
      </van-swipe>
    </div>

    <!-- 首页商品分类栏 type bar -->
    <!-- 使用了div嵌套的方式，这样只要在外层div上使用flex布局就可以让5个元素均匀分部。 -->
    <div class="type-bar">
      <div class="type-item" v-for="(cate,index) in category" :key="index">
        <img v-lazy="cate.image" width="90%" />
        <span>{{cate.mallCategoryName}}</span>
      </div>
    </div>

    <!-- 广告 AD banner area -->
    <div class="ad-banner">
      <img v-lazy="adBanner.PICTURE_ADDRESS" width="100%" />
    </div>

    <!-- 首页商品推荐 Recommend goods area -->
    <div class="recommend-area">
      <div class="recommend-title">
        商品推荐
      </div>
      <div class="recommend-body">
        <!-- swiper -->
        <swiper :options="swiperOption">
          <swiper-slide v-for="(item, index) in recommendGoods" :key="index">
            <div class="recommend-item">
              <img :src="item.image" width="60%" />
              <div>{{item.goodsName}}</div>
              <!-- 过滤器filter，直接在使用价格的地方使用item.price | moneyFilter就可以了。 -->
              <div>￥{{item.price | moneyFilter }} (￥{{item.mallPrice | moneyFilter }})</div>
            </div>
          </swiper-slide>
        </swiper>
      </div>
    </div>

    <!-- 首页楼层区域 floorComponent组件   父组件向子组件转递数据  绑定属性的形式传入需要的值 -->
    <floorComponent :floorData="floor1" :floorTitle="floorName.floor1"></floorComponent>
    <floorComponent :floorData="floor2" :floorTitle="floorName.floor2"></floorComponent>
    <floorComponent :floorData="floor3" :floorTitle="floorName.floor3"></floorComponent>

    <!--首页热卖模块 Hot Area-->
    <div class="hot-area">
      <div class="hot-title">热卖商品</div>
      <div class="hot-goods">
        <!--vant里的van-list热卖模板的组件 -->
        <van-list>
          <!-- 使用van-row布局 -->
          <van-row gutter="20">
            <van-col span="12" v-for="( item, index) in hotGoods" :key="index">
              <goods-info :goodsId="item.goodsId" :goodsImage="item.image" :goodsName="item.name" :goodsPrice="item.price"></goods-info>
            </van-col>
          </van-row>
        </van-list>
      </div>
    </div>
  </div>
</template>

<script>
  // 安装axios之后在要使用的页面组件中进行引入。
  import axios from 'axios'
  // swiper的组件形式引入，在需要的页面以component 的形式引入。
  import { Swiper, SwiperSlide, } from 'vue-awesome-swiper'
  import 'swiper/css/swiper.css'
  import floorComponent from '../component/floorComponent'  //引入首页楼层区域 floorComponent组件
  import {toMoney} from '@/filter/moneyFilter.js'           //引入moneyFilter过滤器
  import goodsInfo from '../component/goodsInfoComponent'   //引入goodsInfoComponent组件
  import url from '@/serviceAPI.config.js'                  //引入接口配置文件

  export default {
    data() {
      return {
        swiperOption:{
          slidesPerView:3,
          autoplay:true,
          loop:true,
          pagination:{
            el:'.swiper-pagination'
          }
        },
        msg: 'ShoppingMall',
        // 图片用require引进到页面中，通过绑定属性的方法插入图片
        locationIcon: require('../../assets/images/location.png'),
        category: [],             //声明category  商品类别标签栏
        adBanner: '',             //声明adBanner  广告图片
        bannerPicArray: [],       //声明bannerPicArray  轮播图片
        recommendGoods:[],        //声明recommendGoods:[]属性，推荐商品
        floor1:[],                //注册一个floor1的数组变量floor1:[]，在axios里得到数据。
        floor2:[],                //楼层2的数据
        floor3:[],                //楼层3的数据
        floorName:{},             //楼层的标题名称，
        hotGoods:[],              //声明hotGoods  热卖商品
      }
    },
    // 过滤器filters，在需要使用的地方直接使用 item.price | moneyFilter
    filters:{
      moneyFilter(money){
        return toMoney(money)
      }
    },
    // 在components里声明 组件
    components: {
      Swiper,                     //swiper的组件
      SwiperSlide,
      floorComponent,             //声明注册首页楼层区域 floorComponent组件
      goodsInfo                   //声明注册goodsInfoComponent组件
    },
    // 在created的声明周期里取得数据
    created() {
      axios({
          url: url.getShoppingMallInfo,
          method: 'get',
        })
      .then(response => {
        console.log(response)
        if (response.status == 200) {
          // 提取数据
          this.category = response.data.data.category;
          this.adBanner = response.data.data.advertesPicture; //在axios里获取 获得广告图片的数据
          this.bannerPicArray = response.data.data.slides;    //在axios里获取 获得轮播图片的数据
          this.recommendGoods = response.data.data.recommend;  //在axios里获取  获得商品的数据
          this.floor1 = response.data.data.floor1;             //在axios里获取  获得楼层1数据
          this.floor2 = response.data.data.floor2;             //在axios里获取  获得楼层2数据
          this.floor3 = response.data.data.floor3;             //在axios里获取  获得楼层3数据
          this.floorName = response.data.data.floorName;       //在axios里获取  楼层名称 的数据
          this.hotGoods = response.data.data.hotGoods;         //在axios里获取  热门商品 的数据
        }
      })
      .catch(error => {
        console.log(error)
      })
    }
  }
</script>

<style scoped>
/* 搜索条样式 */
  .search-bar {
    height: 2.2rem;
    background-color: #e5017d;
    line-height: 2.2rem;
    overflow: hidden;
  }
  /* 图标 */
  .location-icon {
    width: 80%;
    padding-top: .2rem;
    padding-left: .3rem;
  }

  .search-input {
    width: 100%;
    height: 1.3rem;
    border-top: 0px;
    border-left: 0px;
    border-right: 0px;
    border-bottom: 1px solid #fff !important;
    background-color: #e5017d;
    color: #fff;
  }
  /* 轮播图 */
  .swiper-area {
    width: 20rem;
    max-height: 15rem;
    clear: both;
    /*在左右两侧均不允许浮动元素。*/
    overflow: hidden;
    /*内容会被修剪，并且其余内容是不可见的。*/
  }
  /* 采用了flex布局 */
  .type-bar {
    background-color: #fff;
    margin: 0 .3rem .3rem .3rem;
    /* 设置四个边距 */
    border-radius: .3rem; 
    /* 添加圆角的边框 */
    font-size: 14px;
    display: flex;
    /*弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。*/
    flex-direction: row;
    /*灵活的项目将水平显示。*/
    flex-wrap: nowrap;
    /*规定灵活的项目不拆行或不拆列。*/
  }
  .type-bar div {
    padding: .3rem;
    /* 填充 */
    font-size: 12px;
    text-align: center;
    /* 文本居中 */
  }
  .type-item{
    flex: 1;
  }
  /* 首页商品推荐 */
  .recommend-area{
    background-color: #fff;
    margin-top: .3rem;
  }
  .recommend-title{
    border-bottom:1px solid #eee;
    font-size:14px;
    padding:.2rem;
    color:#e5017d;
  }
  /* 商品 */
  .recommend-body{
    border-bottom: 1px solid #eee;
   }
  .recommend-item{
    width:99%;
    border-right: 1px solid #eee;
    font-size: 12px;
    text-align: center;
  }
  /* 热卖模块 */
  .hot-area{
    text-align: center;
    font-size:14px;
    height: 1.8rem;
    line-height:1.8rem;
  }
  .hot-goods{
    height: 130rem;
    overflow: hidden;
    background-color: #FFFFFF;
  }
</style>
